import axios from 'axios';

export interface TUser {
  authControl: boolean; // 是否有权限控制
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: string; // 创建时间，使用Date类型
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 删除标记
  hasAuthCreateOrgCollection: string[]; // 有权限的创建组织集合
  hasAuthCreatorCollection: string[]; // 有权限的创建者集合
  id: string; // 用户ID
  name: string; // 用户姓名
  newVersionTime: number; // 新版本时间，整数类型（int64）
  operator: string; // 操作人ID
  operatorName: string; // 操作人名称
  password: string; // 密文密码
  phone: string; // 手机号码
  smsCode: string; // 短信验证码
  smsCodeExpire: number; // 短信验证码失效时间，整数类型（int64）
  status: string; // 用户状态
  tenantId: string; // 租户ID
  versionTime: number; // 版本时间，整数类型（int64）
  menus: string[];
}

export interface LoginDTO {
  phone: string;
  pwd: string;
}

export interface TUserDTO {
  id: string; // ID
  name: string; // 姓名
  pwd?: string; // 密文密码
  phone: string; // 手机号码
  menuIds: string[];
}

export interface TUserQueryDTO {
  area: string; // 地区
  page: number; // 页数，整数类型（int32）
  rows: number; // 行数，整数类型（int32）
}

export interface TUserRes {
  rows: TUser[];
  total: number;
}
export interface UserMenus {
  menuIds: string[];
  userId: string;
}
export function userLogin(params: LoginDTO) {
  return axios.post<any>('share/user/login', params);
}

export function usePage(params: TUserQueryDTO) {
  return axios.post<TUserRes>('share/user/list/page', params);
}

export function useCreate(data: TUserDTO) {
  return axios.post('share/user/create', data);
}
export function useDetail(id: string) {
  return axios.get<TUserDTO>(`share/user/details/${id}`);
}
export function useDetailByToken() {
  return axios.post<TUserDTO>(`share/user/userDetail`);
}

export function useUpdateAuthMenus(data: UserMenus) {
  return axios.post('share/user/updateAuthMenus', data);
}

export function getUserInfo() {
  return axios.get<TUser>(`share/user/info`);
}

export interface TUser2MenuDTO {
  id?: string;
  menu: string; // 菜单
  userId: string; // 用户ID
}

export interface TUser2MenuVO {
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: string; // 创建时间，使用 Date 类型
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除，1已删除，0正常
  id: string; // 唯一标识ID
  menu: string; // 菜单
  tenantId: string; // 租户ID
  userId: string; // 用户ID
  versionTime: number; // 时间戳，整数类型（int64）
}

// 用户的菜单表-管理
export function user2menuBatchAdd(data: TUser2MenuDTO[]) {
  return axios.post('tUser2menu/batchAdd', data);
}

export function user2menuBatchUpdate(data: TUser2MenuDTO[]) {
  return axios.post('tUser2menu/batchUpdate', data);
}

export function user2menuBatchDelete(ids: string[]) {
  return axios.post('tUser2menu/batchDelete', ids);
}

export function user2menuDetail(userId: string) {
  return axios.post<TUser2MenuVO>('tUser2menu/detail', userId);
}

export interface TCycleDTO {
  id?: string;
  area: string; // 地区编码
  areaName: string; // 地区名称
  name: string; // 名称
  yanglaofee: number; // 养老补贴金额按月
  year: number; // 年份
  yearStr: string;
  yiliaofee: number; // 医疗补贴金额按月
}

export interface TCycleVO {
  area: string; // 地区编码
  areaName: string; // 地区名称
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: Date; // 创建时间 (假设Timestamp为Date类型，可以根据需要修改)
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除, 1已删除, 0正常
  id: string; // ID
  name: string; // 名称
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳
  yanglaofee: number; // 养老补贴金额按月
  year: number; // 年份
  yiliaofee: number; // 医疗补贴金额按月
  yearStr: string;
}

export interface TcCycleRes {
  rows: TCycleVO[];
  total: number;
}

export interface TCycleQueryDTO {
  page: number; // 页数
  rows: number; // 行数
}

// 补贴周期表-管理
export function tCycleAdd(data: TCycleDTO) {
  return axios.post<TUser2MenuVO[]>('tCycle/add', data);
}

export function tCycleUpdate(data: TCycleDTO) {
  return axios.post<TUser2MenuVO[]>('tCycle/update', data);
}

export function tCyclePage(data: TCycleQueryDTO) {
  return axios.post<TcCycleRes>('tCycle/page', data);
}

export function tCycleDetail(id: string) {
  return axios.get<TCycleVO>(`tCycle/detail/${id}`);
}

export interface TDictTreeAddDTO {
  code: string; // 编码
  name: string; // 名称
}

export interface TDictTreeVO {
  code: string; // 编码
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: number; // 创建时间
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除, 1已删除, 0正常
  id: string; // ID
  name: string; // 名称
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳 (int64)
}

export interface TDictTreeQueryDTO {
  page: number; // 页数，integer($int32)
  rows: number; // 行数，integer($int32)
}

export interface TDictTreeRes {
  rows: TDictTreeVO[];
  total: number;
}

export function tDictTreePage(data: TDictTreeQueryDTO) {
  return axios.post<TDictTreeRes>('tDictTree/page', data);
}

export interface TDictQueryDTO {
  page: number; // 页数，integer($int32)
  rows: number; // 行数，integer($int32)
}

export interface TDictVO {
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: number; // 创建时间
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除，1表示已删除，0表示正常
  dictName: string; // 名称
  dictRemark: string; // 备注
  dictValue: string; // 值
  id: string; // ID
  num: string; // 序号
  parentId: string; // 树节点ID
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳，integer($int64)
  description?: string; // 字典数据列表VO (可选)
}

export interface TDictRes {
  rows: TDictVO[];
  total: number;
}

export interface TDictQDTO {
  parentId: string; // 树节点ID
  page: number; // 页数，integer($int32)
  rows: number; // 行数，integer($int32)
}

export function tDictPage(data: TDictQDTO) {
  return axios.post<TDictRes>('tDict/page', data);
}

export interface PersonQryDTO {
  cardId: string; // 身份证或卡号
  page: number; // 页数，integer($int32)
  rows: number; // 行数，integer($int32)
}

export interface PersonInfoVO {
  applyDate: string; // 申请日期
  applyedMonths: number; // 已申请月数，integer($int64)
  canApplyMonths: number; // 可申请月数，integer($int64)
  cardId: string; // 身份证或卡号
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: number; // 创建时间
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除，1表示已删除，0表示正常
  gender: string; // 性别
  id: string; // ID
  name: string; // 姓名
  personBizType: string; // 业务类型
  personBizTypeName: string; // 业务类型名称
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳，integer($int64)
  phone: string;
  fstApplyStartMonthLegalFlag: string;
}
export interface PersonInfoRes {
  rows: PersonInfoVO[];
  total: number;
}

export interface ApplyVO {
  description?: string; // 补贴居民VO (可选)
  areaName: string; // 区域名称
  bankName: string; // 银行名称
  cardId: string; // 身份证或卡号
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: number; // 创建时间
  creator: string; // 创建人ID
  creatorName: string; // 创建人名称
  cycleId: string; // 周期ID
  cycleName: string; // 周期名称
  deleteFlag: string; // 是否删除，1表示已删除，0表示正常
  fee: string; // 费用
  feeend: string; // 费用结束
  feestart: string; // 费用开始
  id: string; // ID
  parentId: string; // 父节点ID
  psnBankCode: string; // 个人银行代码
  remark: string; // 备注
  rptType: string; // 报告类型
  rptTypeName: string; // 报告类型名称
  sourceAreaName: string; // 来源区域名称
  tempStr: string; // 临时字符串
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳，integer($int64)
}

export interface ApplyDetailVO {
  parentId: string; // 记录ID
  rptTypeName: string; // 保险类型名称
  rptType: string; // 保险类型编码
  cycleName: string; // 周期名称
  cycleId: string; // 周期ID
  feestart: string; // 开始月份
  feeend: string; // 结束月份
  fee: string; // 金额
  remark: string; // 备注 (最大长度为1000字符)
}

export function applyPersons(data: PersonQryDTO) {
  return axios.post<PersonInfoRes>('apply/persons', data);
}

export function applyApplys(personId: string) {
  return axios.post<ApplyVO[]>(`apply/applys/${personId}`);
}

export function applyApplyDetails(applyId: string) {
  return axios.post<ApplyDetailVO[]>(`apply/applyDetails/${applyId}`);
}
export interface TNmgVO {
  applyId: string; // 享受记录Id
  area: string; // 地区编码
  areaName: string; // 地区名称
  batch: string; // 导入批次
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: string; // 创建时间 (Timestamp)
  creator: string; // 创建人id
  creatorName: string; // 创建人名称
  deleteFlag: string; // 是否删除,1已删除,0正常
  id: string; // id
  importStatus: string; // 导入状态
  tenantId: string; // 租户ID
  userId: string; // 用户id
  userName: string; // 用户姓名
  versionTime: number; // 时间戳
  公民身份号码: string; // 公民身份号码
  养老享受开始年月: string; // 养老享受开始年月
  养老享受结束年月: string; // 养老享受结束年月
  养老开始年月: string; // 养老开始年月
  养老结束年月: string; // 养老结束年月
  养老缴费总额: number; // 养老缴费总额
  养老补贴月数: number; // 养老补贴月数
  养老补贴比例: string; // 养老补贴比例
  养老补贴金额: number; // 养老补贴金额
  出生日期: string; // 出生日期
  医疗享受开始年月: string; // 医疗享受开始年月
  医疗享受结束年月: string; // 医疗享受结束年月
  医疗开始年月: string; // 医疗开始年月
  医疗结束年月: string; // 医疗结束年月
  医疗缴费总额: number; // 医疗缴费总额
  医疗补贴月数: number; // 医疗补贴月数
  医疗补贴比例: string; // 医疗补贴比例
  医疗补贴金额: number; // 医疗补贴金额
  备注: string; // 备注
  失业开始年月: string; // 失业开始年月
  失业结束年月: string; // 失业结束年月
  失业缴费总额: number; // 失业缴费总额
  失业补贴月数: number; // 失业补贴月数
  失业补贴比例: string; // 失业补贴比例
  失业补贴金额: number; // 失业补贴金额
  姓名: string; // 姓名
  审批状态: string; // 审批状态
  就业创业证号码: string; // 就业创业证号码
  开户银行: string; // 开户银行
  开户银行户名: string; // 开户银行户名
  性别: string; // 性别
  所属地: string; // 所属地
  最终审批标记: string; // 最终审批标记
  有效标记: string; // 有效标记
  民族: string; // 民族
  经办人: string; // 经办人
  经办日期: string; // 经办日期
  经办机构: string; // 经办机构
  补贴年度: string; // 补贴年度
  补贴总额: number; // 补贴总额
  补贴险种: string; // 补贴险种
  资金来源: string; // 资金来源
  银行账号: string; // 银行账号
}
export interface TNmgQueryDTO {
  area: string; // 地区编码
  batch: string; // 导入批次
  importStatus: string; // 导入状态
  page: number; // 页数
  rows: number; // 行数
  公民身份号码: string; // 公民身份号码
}

export interface TNmgRes {
  rows: TNmgVO[];
  total: number;
}
export interface ConfirmNmgDataDTO {
  nmgDataIdList: string[];
}
export function tNmgPage(data: TNmgQueryDTO) {
  return axios.post<TNmgRes>(`tNmg/page`, data);
}
export function tNmgUpdate(data: TNmgVO) {
  return axios.post(`tNmg/update`, data);
}
export function tNmgDelete(id: string) {
  return axios.post(`/tNmg/delete/${id}`);
}
export function tNmgImportExcel(userId: string, data: FormData) {
  return axios.post(`tNmg/importExcel/${userId}`, data, {
    responseType: 'blob',
  });
}
export function tNmgConfirm(data: ConfirmNmgDataDTO) {
  return axios.post<any>(`tNmg/confirm`, data);
}
export interface TOpsVO {
  cardId: string; // 身份证
  createOrgId: string; // 创建组织ID
  createOrgName: string; // 创建组织名称
  createTime: number; // 创建时间
  creator: string; // 创建人id
  creatorName: string; // 创建人名称
  dealerName: string; // 处理人姓名
  deleteFlag: string; // 是否删除,1已删除,0正常
  id: string; // 记录id
  name: string; // 居民姓名
  question: string; // 问题描述
  questionerName: string; // 提问者姓名
  remark: string; // 处理说明
  status: string; // 状态
  tenantId: string; // 租户ID
  versionTime: number; // 时间戳
}
export interface TOpsRes {
  rows: TOpsVO[];
  total: number;
}
export interface TOpsQueryDTO {
  cardId: string; // 身份证
  name: string; // 居民姓名
  page: number; // 页数
  rows: number; // 行数
}
export interface TOpsDTO {
  id?: string;
  cardId: string; // 身份证
  dealerName: string; // 处理人姓名
  name: string; // 姓名
  question: string; // 问题描述
  questionerName: string; // 提问者姓名
  remark: string; // 处理说明
  status: string; // 状态
}
export function tOpsPage(data: TOpsQueryDTO) {
  return axios.post<TOpsRes>('tOps/page', data);
}
export function tOpsAdd(data: TOpsDTO) {
  return axios.post('tOps/add', data);
}
export function tOpsUpdate(data: TOpsDTO) {
  return axios.post('tOps/update', data);
}
export function tOpsDetail(id: string) {
  return axios.get<TOpsDTO>(`tOps/detail?id=${id}`);
}
